import knex from 'knex';

export function createDBConnection (config) {
  const { dbType, connection } = config;

  // 验证配置
  if (!dbType) {
    throw new Error('数据库类型未指定');
  }

  if (!connection) {
    throw new Error('数据库连接信息未提供');
  }

  // 支持的数据库类型
  const supportedDBs = ['mysql', 'sqlite', 'pg'];
  if (!supportedDBs.includes(dbType)) {
    throw new Error(`不支持的数据库类型: ${dbType}。支持的类型: ${supportedDBs.join(', ')}`);
  }

  // 创建 knex 实例
  const db = knex({
    client: dbType === 'mysql' ? 'mysql2' : dbType, // mysql2 是 knex 对 mysql 的支持
    connection,
    pool: {
      min: 0,
      max: 7
    },
    debug: process.env.NODE_ENV === 'development'
  });

  // 测试连接
  db.raw('SELECT 1')
    .then(() => {
      console.log(`成功连接到 ${dbType} 数据库`);
    })
    .catch(err => {
      console.error(`数据库连接失败: ${err.message}`);
      throw err;
    });

  return db;
}